import cn.hutool.crypto.SecureUtil;

import java.io.File;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

/**
 * @author magl
 */
public class CheckSameFile {

	private static final Map<String, HashSet<String>> fileMap = new HashMap<>();


	public static void main(String[] args) {

//		String filePath = "D:\\Dev\\IdeaProjects\\comm-web\\src\\main\\webapp";
		String filePath = "D:\\Dev\\IdeaProjects\\news-web-parent-v2\\news-web\\src\\main\\webapp\\jsp\\special";
		getFiles(filePath);
		for (Map.Entry<String, HashSet<String>> kv : fileMap.entrySet()) {
			if (kv.getValue().size() > 1) {
				if (
						kv.getValue().toString().contains("ueditor1_4_3_3")
						|| kv.getValue().toString().contains(".jsp")
//								|| kv.getValue().toString().contains(".jpg")
				) {
					continue;
				}
				if (
						!kv.getValue().toString().contains("webapp")
				) {
					continue;
				}
//				System.out.println("=================");
//				System.out.println(kv.getKey());
//				System.out.println(kv.getValue().toString().replaceAll("//", "/").replace(filePath, "").replace("\\", "/"));
			}
		}
	}

	/**
	 * 通过递归过得目录和文件
	 */
	public static void getFiles(String filePath) {

		File fileAll = new File(filePath);

		File[] files = fileAll.listFiles();

		for (File file : files) {
			if (file.isDirectory()) {
				//如果是目录
				//递归
				getFiles(file.getAbsolutePath());

//				fileList.add(file.getAbsolutePath());
//				System.out.println("显示" + filePath + "下所有子目录及其文件" + file.getAbsolutePath());
			} else {
				if (file.length() > 950  * 1024){
					System.out.println(file.getAbsolutePath()  +"       "+ file.length()/1024);
				}
				if (file.getAbsolutePath().contains("target")
					|| file.getAbsolutePath().contains("overlays")
					|| !file.getAbsolutePath().contains("src")) {
					continue;
				}
				String md5Str = SecureUtil.md5(file);
				if (!fileMap.containsKey(md5Str)) {
					fileMap.put(md5Str, new HashSet<>());
				}
				fileMap.get(md5Str).add(file.getAbsolutePath());
			}

		}

	}

}